package org.rm.beans;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.rm.beans.util.FacesUtil;
import org.rm.controladores.ControladorJugadores;
import org.rm.entidades.Jugadores;

public class GestorJugadores {

	private DatosModelo modelo;
	private ControladorJugadores jugadores;
	private Jugadores jugador;

	public GestorJugadores() {
		jugadores = new ControladorJugadores();
		jugador = new Jugadores();
	}

	public void setModelo(DatosModelo modelo) {
		this.modelo = modelo;
	}

	/**
	 * Devuelve la lista de jugadores disponible a través del mapa de jugadores
	 * de {@code form}
	 * 
	 * @return lista de jugadores en la sesión
	 * @see FormularioBean#getMapaJugadores()
	 */
	public List<Jugadores> getJugadores() {
		List<Jugadores> listaJugadores = new ArrayList<Jugadores>();
		Map<Integer, Jugadores> jugadores = modelo.getMapaJugadores();
		for (Integer idJugador : jugadores.keySet()) {
			listaJugadores.add(jugadores.get(idJugador));
		}
		return listaJugadores;
	}

	/**
	 * Devuelve una instancia de {@link Jugadores} para que el usuario pueda
	 * rellenarla con datos y crear nuevos jugadores.
	 * 
	 * @return jugador
	 */
	public Jugadores getJugador() {
		return jugador;
	}

	/**
	 * Método setter para la instancia {@code jugador}
	 * 
	 * @param jugador
	 * @see #getJugador()
	 */
	public void setJugador(Jugadores jugador) {
		this.jugador = jugador;
	}

	public String modificaJugador() {
		Integer id = Integer.valueOf(FacesUtil.getParam("id"));
		Jugadores jugador = modelo.getJugador(id);
		jugadores.modificaJugador(jugador);
		return "jugadores";
	}

	public String nuevoJugador() {
		jugadores.nuevoJugador(jugador);
		modelo.getMapaJugadores().put(jugador.getId(), jugador);
		jugador = new Jugadores();
		return "jugadores";
	}

	public String eliminaJugador() {
		String id = FacesUtil.getParam("id");
		jugadores.eliminaJugador(Integer.valueOf(id));
		modelo.getMapaJugadores().remove(id);
		return "jugadores";
	}

}
